#include "printOut.h"
#include "seqlist.h"

void printOutTest()
{
	//Style: \033[1m FGColor: \033[37m BGColor:\033[40m
	char styleGlobal[10] = "";	//全局显示方式
	char fGCGlobal[10] = "";	//全局前景色
	char bGCGlobal[10] = "";	//全局背景色
	//颜色设置测试
	{
		SetColor("\033[1m","\033[34m","");
		printf("hello world\n");
		printf("hello world\n");
		printf("hello world\n");
	}

	//输出位置测试
	{
		ClearScreen();
		//PrintLinesCenter(3);
		PrintCenter("hello world\n");
		ChangeCenter(2);
		PrintCenter("hello world\n");
		PrintCenter("hello world\n");
		ChangeTop();
		PrintHead("hello world\n");
	}
	SetColor("\33[0m", "\33[30m", "");
	printf("hello world\n");
	scanf("%s",bGCGlobal);
	ClearScreen();
	printf("hello world\n");
	printf("hello world\n");
	
	//退出测试
	ShowExit(5);
}


int seqlistTest()
{
	//用户信息打印测试
	{
		PSeqListType userList = CreateEpSeqlist();  //创建一个空的顺序表
		if (userList == NULL)
		{
			printf("创建失败！\n");
			return -1;
		}

		ElementType val;
		val.User.userId = 13554003465;
		val.User.state = 1;
		strcpy(val.User.userName, "里××***");
		strcpy(val.User.password, "3edcsw26yh");
		InsertIntoSeqlist(userList, 0, val);
		ShowUserInfo(val.User);
	}
	

	///联系人信息打印测试
	{
		PSeqListType contactList = CreateEpSeqlist();  //创建一个空的顺序表
		if (contactList == NULL)
		{
			printf("创建失败！\n");
			return -1;
		}

		/*
		long long contactId;			//联系人ID, 用户联系人唯一标识符
		long long userId;				//用户电话号 关联用户表的标识符
		char name[NAME_SIZE];			//联系人姓名 
		char gender[GENDER_SIZE];		//性别 
		int age;						//年龄 
		long long contactId;		//联系电话
		char addres[ADDRES_SIZE];		//家庭住址
		*/
		ContactType contactInfo;
		contactInfo.contactId = 1;
		contactInfo.userId = 13554003465;
		contactInfo.age = 1;
		contactInfo.contactId = 13554003465;
		strcpy(contactInfo.name, "张伟");
		strcpy(contactInfo.gender, "男");
		strcpy(contactInfo.addres, "黄石市青山区长江路1234号黄石市青山区长江路1234号");
		ElementType val;
		val.contactInfo = contactInfo;
		InsertIntoSeqlist(contactList, 0, val);
		InsertIntoSeqlist(contactList, 0, val);
		InsertIntoSeqlist(contactList, 0, val);
		InsertIntoSeqlist(contactList, 0, val);
		InsertIntoSeqlist(contactList, 0, val);
		//ShowContactInfo(0, val.contactInfo);//单行显示
		//ShowContactInfo(1, val.contactInfo);//多行显示
		ShowSeqlist(contactList, 1);
		
		//删除
		PrintCenter("删除\n");
		DeletePostSeqlist(contactList, 1);
		ShowSeqlist(contactList, 1);

		//修改
		PrintCenter("修改\n");
		ChangePostSeqList(contactList, 0, val);
		ShowSeqlist(contactList, 1);

		//查询
		PrintCenter("查询\n");
		int res = SearchDataSeqList(contactList, val);
		char buf[10] = "";
		sprintf(buf, "%d\n", res);
		PrintCenter(buf);
	}
	

}

//用户菜单输入
void initialUserOption(int *op)
{
    int option = 0;
	ClearScreen();
	PrintCenter("^^^^^^^^^^^^^^^ 欢迎使用通信录系统 ^^^^^^^^^^^^^^^\n\n");
    // 展示选项
    PrintCenter("1》登录        \n\n");
    PrintCenter("2》注册        \n\n");
    PrintCenter("3》退出        \n\n");
    PrintCenter("请输入1/2/3.   \n\n\n");
    while(!(option == 1 || option == 2 || option == 3))
    {
        scanf("%d", &option);
    }
	*op = option;
}

int opModelStyle()
{
    // /*
    // "\e[0m" 	//清除颜色 			"\e[0;30m" 	//深黑
    // "\e[1;30m" 	//亮黑，偏灰褐		"\e[0;31m" 	//深红，暗红
    // "\e[1;31m" 	//鲜红
    // */    
    char style[20] = "";	//显示方式
    char fGC[20] = "";	//前景色
    char bGC[20] = "";	//背景色
	char buf[50] = "";
    int styleNum = 0;
	int fGCNum = 0;
	ClearScreen();
	PrintCenter("^^^^^^^^^^^^^^^ 界面风格设置界面(style) ^^^^^^^^^^^^^^^\n\n");
    // 1》样式展示
    PrintCenter("        0,0   //清除颜色        0,30 	//深黑			   \n\n");
    PrintCenter("        1,30  //亮黑 	        0,31 	//深红			   \n\n");
    PrintCenter("请输入样式代码，例如输入 0 0\n");
    scanf("%s", buf);
	sscanf(buf, "%d,%d", &styleNum, &fGCNum);
    sprintf(style, "\33[%dm", styleNum);
    sprintf(fGC, "\33[%dm", fGCNum);
	
    // 2》设置样式
    SetColor(style, fGC, "");
    // 3》保存样式
    return 0;
}

int opSelfStyle()
{
    
    // /*				显示方式			前景色					背景色
    // 重置所有样式	"\033[0m"	黑色	"\033[30m"	黑色背景	"\033[40m"
    // 粗体			"\033[1m"	红色	"\033[31m"	红色背景	"\033[41m"
    // 下划线			"\033[3m"	绿色	"\033[32m"	绿色背景	"\033[42m"
    // 闪烁			"\033[4m"	黄色	"\033[33m"	黄色背景	"\033[43m"
    // 反显			"\033[5m" 	蓝色	"\033[34m"	蓝色背景	"\033[44m"
    // 隐藏			"\033[8m"	品红色	"\033[35m"	品红色背景	"\033[45m"
    //                 青色	"\033[36m"	青色背景	"\033[46m"
    //                 白色	"\033[37m"	白色背景	"\033[47m"
    // */	
    
    char style[20] = "";	//显示方式
    char fGC[20] = "";	//前景色
    char bGC[20] = "";	//背景色
    int styleNum = 0;
	int fGCNum = 0;
    int bGCNum = 0;
	ClearScreen();
	PrintCenter("^^^^^^^^^^^^^^^ 界面风格设置界面(style) ^^^^^^^^^^^^^^^\n\n");
    // 1》样式展示
    PrintCenter("	显示方式			前景色					背景色   \n\n");
    PrintCenter("   重置所有样式 0  	 黑色 30 	           黑色背景 40\n\n");
    PrintCenter("   粗体 1  	        绿色 31 	          红色背景 41\n\n");
    printf("请输入显示方式 前景色 背景色:");
    scanf("%d%d%d", &styleNum, &fGCNum, &bGCNum);
	
    sprintf(style, "\33[%dm", styleNum);
    sprintf(fGC, "\33[%dm", fGCNum);
    sprintf(bGC, "\33[%dm", bGCNum);
	
    // 2》设置样式
    SetColor(style, fGC, bGC);
    // 3》保存样式
    return 0;
}

int main() {
	//seqlistTest();
	//printOutTest();
	// int op;
	// initialUserOption(&op);
	// opSelfStyle();
	printf("%ld\n", sizeof(long));
    return 0;
}